package com.itbaizhan.openhis.controller;

import com.itbaizhan.openhis.domain.CheckItem;
import com.itbaizhan.openhis.dto.CheckItemDto;
import com.itbaizhan.openhis.service.CheckItemService;
import com.itbaizhan.openhis.utils.ShiroSecurityUtils;
import com.itbaizhan.openhis.vo.AjaxResult;
import com.itbaizhan.openhis.vo.DataGridView;
import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.security.SecurityUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

@RestController
@RequestMapping("system/checkItem")
@Slf4j
public class CheckItemController {
	
	@Autowired
	private CheckItemService checkItemService;
	
	/**
	 * 分页查询检查项目
	 * @param checkItemDto
	 * @return
	 */
	@GetMapping("listCheckItemForPage")
	public AjaxResult listCheckItemForPage(CheckItemDto checkItemDto) {
		log.info("分页查询参数：{}",checkItemDto);
		DataGridView dataGridView = checkItemService.listCheckItemForPage(checkItemDto);
		return AjaxResult.success("查询成功",dataGridView.getData(), dataGridView.getTotal());
	}
	
	/**
	 * 添加检查项目
	 * @param checkItemDto
	 * @return
	 */
	@PostMapping("addCheckItem")
	public AjaxResult addCheckItem(@Validated CheckItemDto checkItemDto) {
		log.info("添加参数：{}",checkItemDto);
		checkItemDto.setSimpleUser(ShiroSecurityUtils.getCurrentSimpleUser());
		return AjaxResult.toAjax(checkItemService.addCheckItem(checkItemDto));
	}
	/**
	 * 修改检查项目
	 * @param checkItemDto
	 * @return
	 */
	@PutMapping("updateCheckItem")
	public AjaxResult updateCheckItem(@Validated CheckItemDto checkItemDto) {
		log.info("修改参数：{}",checkItemDto);
		checkItemDto.setSimpleUser(ShiroSecurityUtils.getCurrentSimpleUser());
		return AjaxResult.toAjax(checkItemService.updateCheckItem(checkItemDto));
	}
	
	/**
	 * 删除检查项目
	 * @param checkItemIds
	 * @return
	 */
	@DeleteMapping("deleteCheckItemByIds/{checkItemIds}")
	public AjaxResult deleteCheckItemByIds(@PathVariable
											   @Validated
											   @NotEmpty(message = "检查项目ID不能为空")
											   Long [] checkItemIds){
		log.info("删除参数：{}",checkItemIds);
		return AjaxResult.toAjax(checkItemService.deleteCheckItemByIds(checkItemIds));
	}
	
	/**
	 * 根据id查询检查项目
	 * @return
	 */
	@GetMapping("getCheckItemById/{checkItemId}")
	public AjaxResult getCheckItemById(@PathVariable
										   @Validated
										   @NotNull(message = "检查项目ID不能为空")
										   Long checkItemId){
		log.info("查询参数：{}",checkItemId);
		return AjaxResult.success(checkItemService.getOne(checkItemId));
	}
}
